A semiconductor memory device having a memory cell and capable of storing data to the memory cell is widely known. The semiconductor memory device injects as much as electrical charge as an amount corresponding to the data into the memory cell. The threshold voltage of the memory cell changes in accordance with the amount of the electrical charge held in the memory cell. The semiconductor memory device determines the data stored in the memory cell by identifying, from among a plurality of ranges of voltages, a range including the threshold voltage of the memory cell.
In recent years, the number of bits of data stored in a single memory cell tends to be increased. In accordance with the increase in the number of bits of data stored in a single memory cell, the algorithm for determining the data becomes complicated, and this worsens the performance of reading.